/**
 * @filename:ModelConfigBsRequest 2025-05-14
 * @project starhub-schema  V1.0
 */
package com.starhub.engine.model.request;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

/**   
 * @Description:(大模型设置请求类)
 * @version: V1.0
 * @author: luosw
 */
@Data
@ApiModel(value = "大模型设置后台配置参数实体", description = "大模型设置后台配置参数实体")
public class ModelConfigBsRequest {

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(name = "id" , value = "ID")
    private Long id;

    @ApiModelProperty(name = "mark" , value = "唯一标识，用于区分配置连接")
    private String mark;

    @ApiModelProperty(name = "chartType" , value = "大模型类型，例如：OpenAI、DeepSeek等")
    private String chartType;

    @ApiModelProperty(name = "apiUrl" , value = "大模型服务的API URL")
    private String apiUrl;

    @ApiModelProperty(name = "apiKey" , value = "大模型服务的API密钥")
    private String apiKey;

    @ApiModelProperty(name = "modelType" , value = "模型类型")
    private String modelType;

    @ApiModelProperty(name = "apiId" , value = "大模型服务的API ID")
    private String apiId;

    @ApiModelProperty(name = "apiSecret" , value = "大模型服务的API Secret")
    private String apiSecret;

    @ApiModelProperty(name = "name" , value = "模型名称")
    private String name;

    @ApiModelProperty(name = "modelName" , value = "")
    private String modelName;

    @ApiModelProperty(name = "identifier" , value = "模型标识（英文数字下划线）")
    private String identifier;

    @ApiModelProperty(name = "provider" , value = "模型提供商")
    private String provider;

    @ApiModelProperty(name = "modelId" , value = "模型ID（对应提供商的具体模型ID）")
    private String modelId;

    @ApiModelProperty(name = "description" , value = "模型描述")
    private String description;

    @ApiModelProperty(name = "authType" , value = "认证方式")
    private String authType;

    @ApiModelProperty(name = "maxTokens" , value = "最大token数")
    private Integer maxTokens;

    @ApiModelProperty(name = "temperature" , value = "温度参数")
    private Integer temperature;

    @ApiModelProperty(name = "topP" , value = "top_p参数")
    private Integer topP;

    @ApiModelProperty(name = "frequencyPenalty" , value = "频率惩罚")
    private Integer frequencyPenalty;

    @ApiModelProperty(name = "presencePenalty" , value = "存在惩罚")
    private Integer presencePenalty;

    @ApiModelProperty(name = "isEnabled" , value = "是否启用")
    private String isEnabled;

    @ApiModelProperty(name = "version" , value = "模型版本")
    private String version;

    @ApiModelProperty(name = "lastUsedTime" , value = "最后使用时间")
    private String lastUsedTime;

    @ApiModelProperty(name = "usageCount" , value = "使用次数")
    private Integer usageCount;

    @ApiModelProperty(name = "rateLimit" , value = "速率限制")
    private Integer rateLimit;

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(name = "timeout" , value = "超时时间（毫秒）")
    private Long timeout;

    @ApiModelProperty(name = "retryTimes" , value = "重试次数")
    private Integer retryTimes;

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(name = "retryInterval" , value = "重试间隔（毫秒）")
    private Long retryInterval;

    @ApiModelProperty(name = "proxy" , value = "代理地址")
    private String proxy;

    @ApiModelProperty(name = "headers" , value = "自定义请求头")
    private String headers;

    @ApiModelProperty(name = "params" , value = "自定义参数")
    private String params;

    @ApiModelProperty(name = "status" , value = "模型状态")
    private String status;



}
